package day02;

public class DataTypeDemo {
    public static void main(String[] args) {
       //整数可以直接赋值给 byte，short，char，但不能超出范围
        byte t=1;
        int a=2;
        //byte t1=a;编译错误
        //byte，short，char数据参与运算时，系统一律将其转换为int类型再换算
        byte b1=5;
        byte b2=6;
        byte b3=(byte)(b1+b2);
        //这里不能做单个数的强转,因为变量在外部表现为byte,内部计算为int,所以在外部强转成byte等于没强转
        System.out.println(b3);//结果为11
        System.out.println('2'+'2');//结果为100

        int p= '攻';
        System.out.println(p);//结果为25915，查看字符对应的码
        char p1=555;
        System.out.println(p1);//结果为ȫ，查看码对应的字符


        /* int a=1;
        long b= a;//由小到大，发生自动转换
        int c = (int)b;//由大到小，发生强转，格式为括号里加强转后的类型(int)

        long d =10000000000L;
        int g=(int)d;
        System.out.println(g);//结果为1410065408，发生了溢出现象

        double e=25.678;
        int f =(int)e;
        System.out.println(f);//结果为25，发生了精度丢失*/

        /*char a = '攻';
        char b = ' ';
        //char d='10';编译错误，只能装一个字符
        char d = 65;
        System.out.println(d);//结果为A
        char k= 9999;
        System.out.println(k);//结果为✏

        char e ='\'';//转译号\
        char f='\\';*/

        /* boolean a =true;//boolean类型，占用4个字节，且只能存储true或false
        boolean b =false;*/

        /* double a = 25.678;//小数类型默认为double
        float b=25.678f;//float类型数字后面加f或F
        System.out.println(3.0-2.9);//结果为0.100000000009,发生了舍入现象
        //double 和float 都不能精确计算*/

        /*  long a =25L;//长整型后面必须加L，占8个字节
        //long b=10000000000;编译错误
        long b=10000000000L;
        long d=365L*24*60*60*1000;//结果可能超出，建议在第一个数后面加L
        System.out.println(d);//31536000000

        long e =1000000000*2*10L;
        System.out.println(e);//结果200亿
        long f =1000000000*3*10L;//前面10亿和3相乘超过了整数范围
        System.out.println(f);//结果不是300亿
        long g =1000000000L*3*10;//加在第一个数字后面
        System.out.println(g);//结果正确，是300亿


        /* int a=5;//int类型数据范围：-21亿到+21亿
        int b=2000000000;//超出范围会编译错误
        int c=a/b;
        System.out.println(5/2);//结果为2，整数相除，结果的小数无条件舍弃
        System.out.println(5/2.0);//结果为2.5

        int d =2147483647;
        d=d+1;
        System.out.println(d);//结果为-2147483648，为避免结果溢出，需要更换更大的数据类型*/
    }
}
